<?php 

namespace app\common;

require_once __DIR__.'/Base.php';

use app\common\Base;


/**
 * 路由类 对数据进行初始处理
 */
class Rute extends Base
{
	
	function __construct()
	{
		var_dump('rute __construct');
        parent::__construct();
	}

	/**
     * 路由入口
     */
    public function entrance($message)
    {   
        $this->log(['收到用户收据：',$message]);

        if(in_array($message,array('{"type":"pong"}','{"type":"ping"}'))){
            return;
        }
        if(is_null($message)){
            return;
        }
        if(is_null(json_decode($message))){
            return $this->outMessage(9999,"API messages are not legitimate JSON formats!".$message,[]);
        }
        $msg = json_decode($message,true);
        if(!isset($msg['api'])){
            return $this->outMessage(9998,'unknow error!',[]);
        }


        //客户端连接上后记录类型
        //来自pc的消息     ? 端口
        if($_SESSION['app_type'] == 'pda' || $_SESSION['app_type'] == 'pc'){

            $api = $msg['api'];
            var_dump('api:'.$api);
            $arr_api = explode('_',$api);
            $module = $arr_api[1];
            $class_name = ucfirst($arr_api[2]); //controller
            $action_name = $arr_api[3];

            // 文件必须存在 否则会报错
            // 判断文件路径是否存在
            // $dir = PATH.'controller/'.$module;
            // var_dump('查找目录：'.$dir);
            // if(!is_dir($dir)){
            //     var_dump('模块路径不存在');
            //     return $this->outMessage(9996,'method not find!');
            // }

            // 判断文件是否存在
            $php_field = PATH.'controller/'.$module.'/'.$class_name.'.php';
            var_dump('查找文件：'.$php_field);
            if(!file_exists($php_field)){
                var_dump('类文件不存在');
                return $this->outMessage(9996,'method not find!');
            }

            var_dump('include 文件');
            include_once PATH.'controller/'.$module.'/'.$class_name.'.php';
            try {
                // $obj 控制器类
                $class_name = 'controller\\'.$module.'\\'.$class_name;
                $controller = new $class_name();
                if(method_exists($controller,$action_name)){ 

                    $controller->save_api($api);
                    $this->log(array('调用了接口',$api),'debug');
                    var_dump('调用'.$action_name.'方法');
                    //根据api 名称动态路由调用函数
                    $controller->$action_name($msg); 

                }else{
                     //接口不存在
                     var_dump('方法'.$action_name.'不存在');
                     return $this->outMessage(9996,'method not find!');
                }
            } catch (Exception $e) {
                echo $e->getMessage();
                return $this->outMessage(9996,'method not find!',[],'error');
            }    
        }
        return;
    }







}













 ?>